质量推广预警 - 注解处理变更
Joe Darcy 于 2023 年 7 月 29 日
OpenJDK 质量小组正在推广使用 OpenJDK 构建测试 FOSS 项目,以此来提高发布版本的整体质量。此预警是定期发送给相关项目的通信的一部分。要了解有关该计划以及如何加入的更多信息,请查看 此处。
JDK 21 & JDK 22:注意是否正在使用隐式注解处理
javac 默认情况下启用注解处理,包括在没有注解处理配置选项的情况下。我们正在考虑在未来版本中默认禁用隐式注解处理,最早可能在 JDK 22 中 (JDK-8306819:考虑禁用编译器的默认活动注解处理)。为了提醒 javac 用户这种可能性,从 JDK 21 b29 和 JDK 22 b04 开始,javac 在使用隐式注解处理时会打印一条提示 (JDK-8310061:注意是否正在使用隐式注解处理)。报告的提示是
注解处理已启用,因为在类路径中找到了一个或多个处理器。javac 的未来版本可能会禁用注解处理,除非至少指定了一个处理器名称 (
-processor
),或指定了一个搜索路径 (--processor-path
,--processor-module-path
),或显式启用注解处理 (-proc:only
,-proc:full
)。使用-Xlint:-options
来抑制此消息。使用-proc:none
来禁用注解处理。
良好的构建习惯包括显式配置注解处理。为了便于将来过渡到不同的默认策略,JDK 21 中的新选项 -proc:full
javac 选项请求当前的默认行为,即在类路径中查找注解处理器。